package 结构型模式.代理模式;

/**
 * 主要角色
 * Subject（抽象主题）：定义真实主题和代理主题的共同接口
 * RealSubject（真实主题）：实现实际业务逻辑的类
 * Proxy（代理）：包含对真实主题的引用，可以控制对真实主题的访问
 */

interface ISwitch
{
	void on();
}

class Tv implements ISwitch
{
	@Override
	public void on() {
		System.out.println("打开电视");
	}
}

class ProxyTv implements ISwitch
{
	private ISwitch iSwitch;

	ProxyTv() {
		this.iSwitch = new Tv();
	}

	@Override
	public void on() {
		iSwitch.on();
		System.out.println("切电视频道");
	}
}

public class Proxy 
{
	public static void main(String[] args) {
		ProxyTv proxyTv = new ProxyTv();
		proxyTv.on();
	}
}
